經過前兩天的安裝與設定,我們已經可以用 Express 連接 MySQL 資料庫。
接下來我們要來學學怎麼 讀取/新增/刪除/修改,
也就是大家口中常提到的 CRUD (Create/ Read/ Update/ Delete) 。
在這之前我們講解一下 SQL 語法讓大家有個基本的概念。
不知道大家有沒有發現,昨天已經不小心偷跑了兩個 SQL 語法 → 新增和讀取。
Create (新增, INSERT INTO 語法)
使用 INSERT INTO
TableName
(column1, column2, ...)
VALUES
(value1, value2,...)
→ 用來新增該資料表某一筆資料。
INSERT INTO `booktest` (`bookName`) VALUES
('testBook')
-- 在 booktest 的資料表新增欄位 `bookName` 為 'testBook' 的資料
Read (讀取, SELECT 語法)
使用 SELECT
* FROM
TableName
→ 用來讀取該資料表的所有資料。
SELECT * FROM `booktest`
-- 讀取 booktest 資料表的所有資料
Update (修改, UPDATE 語法)
使用 UPDATE
TableName
SET
column1=value1, column2=value2, ...
WHERE
'符合的條件'
→ 用來更新該資料表符合條件的欄位資料。
UPDATE `booktest` SET `bookName` = 'testBook1' WHERE id = 1
-- 將 booktest 資料表 id = 1 的 bookName 欄位資料改為 'testBook1'
Delete (刪除, DELETE FROM 語法)
使用 DELETE FROM
TableName
WHERE
'符合的條件'
→ 用刪除該資料表符合條件的資料。
DELETE FROM `booktest` WHERE id = 1
-- 將 booktest 資料表 id = 1 的資料刪除
我們再回過頭來看一下昨天的測試語法,
// config\mysqlConnection.js
// simple query
const [rows, fields] = await connection.query('SELECT * FROM `booktest`')
咦? 是不是只要把我們的 SQL 直接寫在 connection.query()
裡面就好了呢?
看樣子好像是這樣,我們再下幾個指令試試看:
// config\mysqlConnection.js
const mysql = require('mysql2/promise')
async function mysqlConnection() {
try {
// 建立與數據庫的連接
const connection = await mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
database: 'book',
password: '${密碼}'
})
// query database
const [rows1, fields1] = await connection.query('INSERT INTO `booktest` (`bookName`) VALUES ("testBook")')
console.log(rows1)
// query database
const [rows2, fields2] = await connection.query('UPDATE `booktest` SET `bookName` = "testBook1" WHERE id = 1')
console.log(rows2)
// query database
const [rows3, fields3] = await connection.query('SELECT * FROM `booktest`')
console.log(rows3)
// 關閉連接
connection.end()
} catch (error) {
console.error('連接數據庫時出現錯誤:', error)
}
}
mysqlConnection()
像昨天一樣先在終端機下 cd config
,
再下 node mysqlConnection.js
指令,測試看看有沒有我們預期應該出現的資料。
看樣子原本 id 為 1 的 testBook
有修改成功為 testBook1
,也順利地加入一個新資料!
是不是有點很有趣呢?
明天我們可以結合前幾天做的路由來實際實作看看。
參考資料: